/****

    activequant - activestocks.eu

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

	
	contact  : contact@activestocks.eu
    homepage : http://www.activestocks.eu

 ****/
package org.activequant.data.preparation;

import org.activequant.core.domainmodel.data.MarketDataEntity;
import org.activequant.core.domainmodel.data.TimeSeries;

/**
 * Filter mechanism which transforms the given set of time-series<br/>
 * objects according to the filter implementation.<br/>
 * An interface. Defines the following method:
 * <ul>
 * <li>&lt;U extends MarketDataEntity&lt;U&gt;, T extends TimeSeries&lt;U&gt;&gt; T[] process(Class&lt;U&gt; clazz, T... series) throws Exception;</li>
 * </ul>
 * <br>
 * <b>History:</b><br>
 * - [10.11.2006] Created (Erik Nijkamp)<br>
 * - [25.01.2008] Generic version (Erik Nijkamp)<br>
 * 
 * @author Erik Nijkamp
 */
public interface IFilter {

	/**
	 * Filter processing series.
	 * 
	 * @param T
	 * @param series
	 * @return
	 * @throws Exception
	 */
	<U extends MarketDataEntity<U>, T extends TimeSeries<U>> T[] process(Class<U> clazz, T... series) throws Exception;

}
